---
id: unit7
title: 第七章 多处理机
---
## 7.1 多处理机的概念、问题和硬件结构
多处理机是指有两台以上的处理机，共享I／0子系统，机间经共享主存或高速通信网络通信，在统一操作系统控制下，协同求解大而复杂问题的计算机系统。
多处理机与阵列处理机的比较如下：
多处理机是属于多指令流多数据流的系统。它与单指令流多数据流的阵列处理机相比，有很大的差别。其差别主要来源于并行性的等级不同，阵列处理机主要是针对向量、数组处理，实现向量指令操作级的并行，是开发并行性中的同时性。多处理机实现的则是更高一级的作业或任务间的并行，是开发并行性中的并发性。因此，在硬件结构上，它的多个处理机要用多个指令部件分别控制，通过共享主存或机间互联网络实现异步通信；在算法上，不限于向量、数组处理，还要挖掘和实现更多通用算法中隐含的并行性；在系统管理上，要更多的依靠操作系统等软件手段，有效地解决资源分析和管理，特别是任务分配、处理机调度、进程的同步和通信等问题。
多处理机有紧耦合和松耦合两种不同的构形。
（1）紧耦合多处理机。紧耦合多处理机是通过共享主存来实现处理机间通信的，其通
信速率受限于主存频宽。各处理机与主存经互联网络连接，处理机数受限于互联网络带
宽及各处理机访主存冲突的概率。
（2）松耦合多处理机。松耦合多处理机中，每台处理机都有一个容量较大的局部存储
器，用于存储经常用的指令和数据，以减少紧耦合系统中存在的访主存冲突。不同处理机
间或者通过通道互联实现通信，以共享某些外围设备；或者通过消息传送系统（MTS）来
交换信息，这时各台处理机可带有自己的外围设备。消息传送系统常采用分时总线或环
形、星型、树形等拓扑结构。松耦合多处理机较适合做粗粒度的并行计算。
在紧耦合多处理机中就各处理机而言，又有同构对称型和异构非对称型两种。当多处理机用于并行任务时，常采用同构对称型的紧耦合多处理机。采用异构非对称型多处理机时，其主处理机不同于从处理机。
［单选］多处理机的互连一般采用总线、环形互连、交叉开关、多端口存储器或蠕虫穿洞寻径网络等几种形式。
为解决多个处理机同时访问公用总线的冲突，研制了静态优先级、固定时间片、动态优先级、先来先服务等多种总线仲裁算法。
环形互连的缺点是：
由于环形互连是点点连接，不是总线连接，其物理参数容易得到控制，非常适合于有高通信带宽的光纤通信。光纤通信是很难用在总线式互连系统上的。环形互连的缺点是信息在每个接口处都会有一个单位的传输延迟，当互连的处理机机数增加时，环中的信息传输延迟将增大。令牌环可看成是一种周期短、延迟长的流水线。
多端口存储器形式的中心是多端口存储器模块。多个存储器模块的相应端口连接在一起，每一个端口负责处理一个处理机P或1／0通道的访存请求。
蠕虫穿洞寻径网络的含义如下：
机间采用小容量缓冲存储器，用于消息分组寻径存储转发。在蠕虫网络中，将消息分组又分割成一系列更小的小组，同一分组中所有小组以异步流水方式按序不间断地传送，并且同一分组中的所有小组，只有头部的小组知道其所在整个分组传送的目的地，用硬件方式进行传送的应答。各个分组允许交叉传送，但不同分组中的各个小组不能相互混在一起传送，利用虚拟通道思想，使存在于发送和接收结点之间的一条物理通道能被多个虚拟通道分时共享。
## 7.2 紧耦合多处理机多Cache的一致性问题
多Cache的一致性问题的产生原因如下：
在多处理机中，情况比较复杂。由于每个处理机都有自己的专用Cache，当主存中同一个信息块在多个Cache中都有时，会出现多个Cache之间的相应信息块的内容不一致的问题。使用写直达法，处理机进行写操作，可以保证其Cache与主存的内容一致，但不能保证有此副本的其他处理机的Cache中的信息块与主存中的一致。而且，在多处理机上，为了提高系统的效率，有时还允许进程迁移，将一个尚未执行完而被挂起的进程调度到另一个空闲的处理机上去执行，使系统中处理的负荷保持均衡，这样做也会造成Cache与主存间的不一致。因为被迁移的进程中最近修改过的信息只保留在原处理机的Cache中。迁到新的处理机后，该进程就会使用主存中已过期的旧信息，使进程不能正确地得到恢复而出错。另外，当系统发生绕过Cache的输入／输出操作时，也会导致多Cache块之间及Cache与主存对应块的内容不一致。
多Cache的一致性问题的解决办法如下：
（1）解决进程迁移引起的多Cache之间的不一致性。对于进程迁移引起的多Cache
之间的不一致性问题，可以通过禁止进程迁移的办法予以解决，也可以在进程挂起时，靠
硬件方法将Cache中该进程改写过的信息块强制写回主存相应位置的办法来解决。
（2）以硬件为基础实现多Cache的一致性。以硬件为基础实现多Cache的一致性的
办法有多种。最普遍采用的办法叫做监视 Cache 协议法，即各个处理机中的Cache 控制
器随时都在监视着其他Cache的行动。监视Cache 协议法实现简单，但只适用于总线互
连的多处理机。而且不管是写作废还是写更新，都要占用总线不少时间。因此，只能用于
机数少的多处理机中。商品化的多处理机大多采用此法。
（3）以软件为基础实现多Cache的一致性。以硬件为基础的做法将增大对互连网络
的道信，处理机数多时复杂。因此，提出了一些以软件为基础的做法。它
竹都是靠软件来限制的，不把一些公用的可写数据存人Cache中。
以软件为基础解决Cache一致性的做法，主要优点是可以降低硬件的复杂性，降低对互连网络通信量的要求，因而性能价格比可以较高，比较适用于处理机数多的多处理机。
## 7.3 多处理机的并行性和性能
按运算基本对象，并行算法可分为数值型和非数值型两类。
按并行进程间的操作顺序不同，并行算法又分为同步型、异步型和独立型3种。
根据各处理机计算任务的大小（即任务粒度）不同，并行算法又分为细粒度、中粒度和粗粒度3种。
程序并行性的分析如下：
（1）数据相关。如果P；的左部变量在P；的右部变量集内，且P；必须取出P；运算的
结果来作为操作数，就称P；“数据相关”于Pi。相当于流水中发生的“先写后读”相关。
（2）数据反相关。如果P；的左部变量在P；的右部变量集内，且当P；未取用其变量的
值之前，是不允许被P；所改变的，就称P；“数据反相关”与P；。相当于流水中发生的“先
读后写”相关。
（3）数据输出相关。如果P；的左部变量也是P；的左部变量，且P；存人其算得的值
必须在P；存入之后，则称P；“数据输出相关”与Pi。
除了上述3种相关外，如果两个程序段的输入变量互为输出变量，同时具有“先写后读”和“先读后写”两种相关，以交换数据为目的，则两者必须并行执行，既不能顺序串行，也不能交换串行。
如果两个程序段之间不存在任何一种数据相关，既无共同变量，或共同变量只出现在右部的源操作数，则两个程序段可以无条件地并行执行，也可以顺序串行或交换串行。
并行算法需要用并行程序来实现，为了加强程序并行性的识别能力，就要使用并行程序设计语言。并行程序设计语言的基本要求是：能使程序员在其程序中灵活、方便地表示出各类并行性，能在各种并行／向量计算机系统中高效地实现。并行进程的特点是这些进程在时间上重叠地执行，一个进程未结束，另一个进程就已开始。
并行任务的派生是使一个任务在执行的同时，派生出可与它并行执行的其他一个或多个任务，分配给不同的处理机完成。
衡量任务粒度大小的依据是：
衡量任务粒度大小的一个依据是程序用于有效计算的执行时间E与处理机间的通信等辅助开销的时间C的比值。只有E／C的值较大时，开发并行性才有好处。如果最大并行度会带来最大的通信等辅助开销，倒不如增大任务粒度，降低并行度来减少辅助开销。因此，为获得最佳的性能，必须对并行性和额外开销进行权衡。
## 7.4 多处理机的操作系统
主从型操作系统的优点是：
主从型操作系统的结构比较简单；整个管理程序只在一个处理机上运行，除非某些需递归调用或多重调用的公用程序，一般都不必是可再人的；只有一个处理机访问执行表，不存在系统管理控制表格的访问冲突和阻塞，简化了管理控制的实现。所有这些均使操作系统能最大限度地利用已有的单处理机多道程序分时操作系统的成果，只需要对它稍
加扩充即可。因此，实现起来简单、经济、方便，是目前大多数多处理机操作系统所采用的方式。
主从型操作系统的缺点是：
对主处理机的可靠性要求很高。一旦发生故障，很容易使整个系统瘫痪，这时必须由操作员干预才行。如果主处理机不是设计成专用的，操作员可用其他处理机作为新的主处理机来重新启动系统。整个系统显得不够灵活，同时要求主处理机必须能快速执行其管理功能，提前等待请求，以便及时为从处理机分配任务，否则将使从处理机因长时间空闲而显著降低系统的效率。即使主处理机是专门的控制处理机，如果负荷过重，也会影响整个系统的性能，特别是当大部分任务都很短时，由于频繁地要求主处理机完成大量的管理性操作，系统的效率将会显著降低。
主从型操作系统的适用场合是：
主从型操作系统适用于工作负荷固定，从处理机能力明显低于主处理机，或由功能相差很大的处理机组成的异构型多处理机。
各自独立型操作系统的优点是：
很适应分布处理的模块化结构特点，减少对大型控制专用处理机的需求；某个处理机发生故障，不会引起整个系统的瘫痪，有较高的可靠性；每台处理机都有其专用控制表格，使访问系统表格的冲突较少，也不会有许多公用的执行表，同时控制进程和用户进程一起进行调度，能取得较高的系统效率。
各自独立型操作系统的缺点是：
实现复杂。尽管每台处理机都有自己的专业控制表格，但仍有一些共享表格，会增加共享表格的访问冲突，导致进程调度的复杂性和开销的加大。某台处理机一旦发生故障，要想恢复和重新执行未完成的工作比较困难。每台处理机都有自己专用的输入／输出设备和文件，使整个系统的输入／输出结构变换需要操作员干预。各处理机负荷的平衡比较困难。各台处理机需有局部存储器存放管理程序副本，降低了存储器的利用率。
各自独立型操作系统的适用场合是：
各自独立型操作系统适用于松耦合多处理机。
浮动型操作系统是介于主从型和各自独立型操作系统之间的一种折中方式，其管理程序可以在处理器之间浮动。在一段较长的时间里指定某一台处理机为控制处理机，但是具体指定哪一台处理机以及担任多长时间控制处理都是不固定的。
## 7.5多处理机的发展
机群系统是将多个高性能的工作站或高档微型计算机，使用高速的通信网络加以互连组成的系统。
机群系统中的主机和网络可以是同构的，也可以是异构的。主机间的通信主要采用消息传递。从结构和结点间的通信来看，是一种分布式存储方式；从用户来看，表示的是一个完整的并行系统。
机群系统比起传统的并行处理系统有如下明显的优点：
（1）系统有高的性能价格比。
（2）系统的开发周期短。
（3）系统的可扩展性好。
（4）系统的资源利用率高。
（5）用户投资风险小。
（6）用户编程方便。



